// ==========================================================================
// gin-sns自动生成控制器相关代码，只生成一次，按需修改,再次生成不会覆盖.
// date：2021-02-21 13:45:54 +0800 CST
// path: app/controller/module/follow_api.go
// author：jon
// ==========================================================================
package module

import (
	"gin-sns/app/ginframe/response"
	"gin-sns/app/model"
	followModel "gin-sns/app/model/module/follow"
	"gin-sns/app/service/module"

	"github.com/gin-gonic/gin"
	//"gin-sns/app/ginframe/utils/gconv"
)

var FollowApi = newFollowApi()

func newFollowApi() *followApi {
	return &followApi{}
}

type followApi struct {
}

//列表分页数据
func (c *followApi) ListAjax(ctx *gin.Context) {
	req := new(followModel.SelectPageReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetMsg(err.Error()).Log("follow管理", req).WriteJsonExit()
		return
	}
	rows := make([]followModel.Entity, 0)
	result, page, err := module.FollowService.SelectListByPage(req)

	if err == nil && len(result) > 0 {
		rows = result
	}

	response.BuildTable(ctx, page.Total, rows).WriteJsonExit()
}

//新增页面保存
func (c *followApi) AddSave(ctx *gin.Context) {
	req := new(followModel.AddReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Add).SetMsg(err.Error()).Log("关注新增数据", req).WriteJsonExit()
		return
	}

	id, err := module.FollowService.AddSave(req, ctx)

	if err != nil || id <= 0 {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Add).Log("关注新增数据", req).WriteJsonExit()
		return
	}
	response.SucessResp(ctx).SetData(id).Log("关注新增数据", req).WriteJsonExit()
}

//修改页面保存
func (c *followApi) EditSave(ctx *gin.Context) {
	req := new(followModel.EditReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Edit).SetMsg(err.Error()).Log("关注修改数据", req).WriteJsonExit()
		return
	}

	rs, err := module.FollowService.EditSave(req, ctx)

	if err != nil || rs <= 0 {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Edit).Log("关注修改数据", req).WriteJsonExit()
		return
	}
	response.SucessResp(ctx).SetBtype(model.Buniss_Edit).Log("关注修改数据", req).WriteJsonExit()
}

//删除数据
func (c *followApi) Remove(ctx *gin.Context) {
	req := new(model.RemoveReq)
	//获取参数
	if err := ctx.ShouldBind(req); err != nil {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Del).SetMsg(err.Error()).Log("关注删除数据", req).WriteJsonExit()
		return
	}

	rs := module.FollowService.DeleteRecordByIds(req.Ids)

	if rs > 0 {
		response.SucessResp(ctx).SetBtype(model.Buniss_Del).Log("关注删除数据", req).WriteJsonExit()
	} else {
		response.ErrorResp(ctx).SetBtype(model.Buniss_Del).Log("关注删除数据", req).WriteJsonExit()
	}
}
